// pages/component/dialog.js
const DIALOG_CONFIG = [{
        type: "#mpw-dialog_default",
        className: "",
    },
    {
        type: "#mpw-dialog_terms",
        className: "",
    },
    {
        type: "#mpw-dialog_timing",
        className: "",
    },
]
let timeout = null

Component({
    /**
     * 组件的属性列表
     */
    properties: {
        //   externalClasses: ['mpw-comp-mask']
    },

    /**
     * 组件的初始数据
     */
    data: {

    },

    /**
     * 组件的方法列表
     */
    methods: {
        show(opt) {
            console.log(opt)
            opt.show = true;
            this.setData({
                opt: opt
            })
            if (this.data.opt.duration && this.data.opt.duration > 0) {
                if (timeout) {
                    clearInterval(timeout);
                    timeout = null
                }
                timeout = setInterval(() => { 
                    this.hide();
                }, this.data.opt.duration)
            }
        },
        hide() {
            this.data.opt.show = false;
            this.setData({
                opt: this.data.opt
            })
            clearInterval(timeout)
        },

        /**
         * 分配回调
         * @param {String} mpw->组件id
         * @param {String} funt->回调类型
         */
        setCallback(mpw, funt) {
            console.log(this.data)
            for (var a = 0; a < DIALOG_CONFIG.length; a++) {
                for (const key in DIALOG_CONFIG[a]) {
                    if (DIALOG_CONFIG[a].type == mpw) {
                        if (funt == 'fail') this.data.opt.fail();
                        if (funt == 'success') this.data.opt.success();
                        return;
                    }
                }
            }
        },

        /**
         * @事件绑定 
         * @组件id：#mpw-dialog_default（默认对话框）
         * 取消按钮点击事件
         */
        mpwDialogDefauleConcel() {
            console.log('组件内点击取消')
            this.hide();
            this.setCallback('#mpw-dialog_default', 'fail');
        },

        /**
         * @事件绑定 
         * @组件id：#mpw-dialog_default（默认对话框）
         * 确定按钮点击事件
         */
        mpwDialogDefaultConfirm() {
            console.log('组件内点击确定')
            this.hide();
            this.setCallback('#mpw-dialog_default', 'success');
        },

        /**
         * @事件绑定 
         * @组件id：#mpw-dialog_terms（条款对话框）
         * 关闭按钮点击事件
         */
        mpwDialogTermsClose() {
            this.hide();
            this.setCallback('#mpw-dialog_terms', 'fail');
        },

        /**
         * @事件绑定 
         * @组件id：#mpw-dialog_terms（条款对话框）
         * 确定按钮点击事件
         */
        mpwDialogTermsConfirm() {
            console.log('dialog确定按钮点击事件')
            this.hide();
            this.setCallback('#mpw-dialog_terms', 'success');
        },

        /**
         * @事件绑定 
         * @组件id：#mpw-dialog_timing（即时对话框）
         * 确定按钮点击事件
         */
        mpwDialogTimingConfirm() {
            console.log('dialog确定按钮点击事件')
            this.hide();
            this.setCallback('#mpw-dialog_timing', 'success');
        },
    }
})